package initConfig

import "time"

// AppConfig 定义全局应用配置
type AppConfig struct {
	Log           LogConfig           `yaml:"log"`
	CORS          CORSConfig          `yaml:"cors"`
	Video         VideoConfig         `yaml:"video"`
	Database      DatabaseConfig      `yaml:"database"`
	ServerAddress ServerAddressConfig `yaml:"serverAddress"`
}

type ServerAddressConfig struct {
	Host string `yaml:"host"`
	Port int    `yaml:"port"`
}

// DatabaseConfig 定义数据库配置结构体
type DatabaseConfig struct {
	Host     string `yaml:"host"`
	Port     int    `yaml:"port"`
	User     string `yaml:"user"`
	Password string `yaml:"password"`
	Name     string `yaml:"name"`
}

// LogConfig 定义日志配置结构体
type LogConfig struct {
	Level          string `yaml:"level"`          // 日志级别
	TimeFormat     string `yaml:"timeFormat"`     // 时间格式
	Format         string `yaml:"format"`         // 日志输出格式
	LogFile        string `yaml:"logFile"`        // 日志文件路径
	EnableRotation bool   `yaml:"enableRotation"` // 是否启用文件轮转
	MaxSize        int    `yaml:"maxSize"`        // 单个文件最大大小
	MaxBackups     int    `yaml:"maxBackups"`     // 保留的最大旧文件数量
	MaxAge         int    `yaml:"maxAge"`         // 保留旧文件的最大天数
	Compress       bool   `yaml:"compress"`       // 是否压缩旧文件
}

// CORSConfig 定义 CORS 配置
type CORSConfig struct {
	AllowOrigins     []string      `yaml:"allowOrigins"`
	AllowMethods     []string      `yaml:"allowMethods"`
	AllowHeaders     []string      `yaml:"allowHeaders"`
	ExposeHeaders    []string      `yaml:"exposeHeaders"`
	AllowCredentials bool          `yaml:"allowCredentials"`
	MaxAge           time.Duration `yaml:"maxAge"`
}

type VideoConfig struct {
	StoragePath     string `yaml:"storagePath"`
	ExternalAddress string `yaml:"externalAddress"`
}
